/*
 * Copyright 2008 Zoundry LLC, Inc.  All Rights Reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 */
package org.zoundry.gaedt.ui.editors;

import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.operations.UndoRedoActionGroup;
import org.eclipse.ui.part.MultiPageEditorActionBarContributor;

/**
 * Action bar contributor for the application editor.
 */
public class ZGaeApplicationEditorActionBarContributor extends MultiPageEditorActionBarContributor
{
    /** The application editor we are attached to. */
    private ZGaeApplicationEditor mApplicationEditor;
    /** The undo/redo action group. */
    private UndoRedoActionGroup mUndoRedoActionGroup;

    /**
     * Initialize the contributor with the given editor.
     * 
     * @param aApplicationEditor
     */
    public void init(ZGaeApplicationEditor aApplicationEditor)
    {
        setApplicationEditor(aApplicationEditor);
    }

    /**
     * @see org.eclipse.ui.part.MultiPageEditorActionBarContributor#setActivePage(org.eclipse.ui.IEditorPart)
     */
    @Override
    public void setActivePage(IEditorPart aActiveEditor)
    {
        getActionBars().clearGlobalActionHandlers();
        getUndoRedoActionGroup().fillActionBars(getActionBars());
    }

    /**
     * @see org.eclipse.ui.part.MultiPageEditorActionBarContributor#setActiveEditor(org.eclipse.ui.IEditorPart)
     */
    @Override
    public void setActiveEditor(IEditorPart aPart)
    {
        super.setActiveEditor(aPart);
    }

    /**
     * @return the undoRedoActionGroup
     */
    protected UndoRedoActionGroup getUndoRedoActionGroup()
    {
        if (mUndoRedoActionGroup == null)
        {
            mUndoRedoActionGroup = new UndoRedoActionGroup(getApplicationEditor().getSite(), getApplicationEditor().getUndoContext(), false);
        }
        return mUndoRedoActionGroup;
    }

    /**
     * @return the applicationEditor
     */
    protected ZGaeApplicationEditor getApplicationEditor()
    {
        return mApplicationEditor;
    }

    /**
     * @param aApplicationEditor the applicationEditor to set
     */
    protected void setApplicationEditor(ZGaeApplicationEditor aApplicationEditor)
    {
        mApplicationEditor = aApplicationEditor;
    }
}
